Crate libp2p_swarm
source ·Expand description
High-level network manager.
A Swarm
contains the state of the network as a whole. The entire
behaviour of a libp2p network can be controlled through the Swarm
.
The Swarm
struct contains all active and pending connections to
remotes and manages the state of all the substreams that have been
opened, and all the upgrades that were built upon these substreams.
Initializing a Swarm
Creating a Swarm
requires three things:
- A network identity of the local node in form of a
PeerId
. - An implementation of the
Transport
trait. This is the type that will be used in order to reach nodes on the network based on their address. See thetransport
module for more information. - An implementation of the
NetworkBehaviour
trait. This is a state machine that defines how the swarm should behave once it is connected to a node.
Network Behaviour
The NetworkBehaviour
trait is implemented on types that indicate to
the swarm how it should behave. This includes which protocols are supported
and which nodes to try to connect to. It is the NetworkBehaviour
that
controls what happens on the network. Multiple types that implement
NetworkBehaviour
can be composed into a single behaviour.
Protocols Handler
The ConnectionHandler
trait defines how each active connection to a
remote should behave: how to handle incoming substreams, which protocols
are supported, when to open a new outbound substream, etc.
Re-exports
pub use behaviour::NetworkBehaviourAction;
Deprecatedpub use behaviour::AddressChange;
pub use behaviour::CloseConnection;
pub use behaviour::ConnectionClosed;
pub use behaviour::DialFailure;
pub use behaviour::ExpiredExternalAddr;
pub use behaviour::ExpiredListenAddr;
pub use behaviour::ExternalAddresses;
pub use behaviour::FromSwarm;
pub use behaviour::ListenAddresses;
pub use behaviour::ListenFailure;
pub use behaviour::ListenerClosed;
pub use behaviour::ListenerError;
pub use behaviour::NetworkBehaviour;
pub use behaviour::NewExternalAddr;
pub use behaviour::NewListenAddr;
pub use behaviour::NotifyHandler;
pub use behaviour::PollParameters;
pub use behaviour::ToSwarm;
pub use handler::IntoConnectionHandler;
Deprecatedpub use handler::ConnectionHandler;
pub use handler::ConnectionHandlerEvent;
pub use handler::ConnectionHandlerSelect;
pub use handler::ConnectionHandlerUpgrErr;
pub use handler::IntoConnectionHandlerSelect;
pub use handler::KeepAlive;
pub use handler::OneShotHandler;
pub use handler::OneShotHandlerConfig;
pub use handler::SubstreamProtocol;
Modules
- Once a connection to a remote peer is established, a
ConnectionHandler
negotiates and handles one or more specific protocols on the connection.
Structs
- An record in a prioritised list of addresses.
- Network connection information.
- A connection was denied.
- Connection identifier.
- ConnectionLimitDeprecatedInformation about a connection limit.
- ConnectionLimitsDeprecatedThe configurable connection limits.
- Information about the connections obtained by
Swarm::network_info()
. - Contains the state of the network, plus the way it should behave.
- A
SwarmBuilder
provides an API for configuring and constructing aSwarm
. - Parameters passed to
poll()
, that theNetworkBehaviour
has access to.
Enums
- The result of adding an address to an ordered list of addresses with associated scores.
- The “score” of an address w.r.t. an ordered collection of addresses.
- Errors that can occur in the context of an established
Connection
. - Possible errors when trying to establish or upgrade an outbound connection.
- Possible errors when upgrading an inbound connection.
- Event generated by the
Swarm
.
Traits
- Implemented on objects that can run a
Future
in the background.
Type Definitions
- Substream for which a protocol has been chosen.
- Custom error that can be produced by the
ConnectionHandler
of theNetworkBehaviour
. - Custom event that can be received by the
ConnectionHandler
of theNetworkBehaviour
. - Custom event that can be produced by the
ConnectionHandler
of theNetworkBehaviour
.
Derive Macros
- NetworkBehaviour
macros
Generates a delegatingNetworkBehaviour
implementation for the struct this is used for. See the trait documentation for better description.